package ycl.important.mapper.sys;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Repository;
import ycl.important.common.base.mapper.BaseDao;
import ycl.important.entity.sys.User;

/**
 * <p>
 * 用户表 Mapper 接口
 * </p>
 *
 * @author YCL
 * @since 2021-06-07
 */
@Repository("userMapper")
@Mapper
public interface UserMapper extends BaseDao<User> {


	/**
	 * 根据用户名查询用户
	 *
	 * @param username
	 * @return
	 */
	@Select("select * from sys_user where username = #{username} limit 1")
	User selectByUsername(@Param("username") String username);

	/**
	 * 根据手机号查询用户
	 *
	 * @param mobile
	 * @return
	 */
	User selectByMobile(@Param("mobile") String mobile);

	/**
	 * 根据用户名查询用户是否存在
	 *
	 * @param username
	 * @return
	 */
	boolean selectExistByUsername(@Param("username") String username);


	/**
	 * 根据手机号查询用户是否存在
	 *
	 * @param mobile
	 * @return
	 */
	boolean selectExistByMobile(@Param("mobile") String mobile);

	/**
	 * 用户退出登录
	 *
	 * @param id
	 */
	void logout(@Param("id") Long id);

	/**
	 * 根据邀请码查询用户
	 *
	 * @param code
	 * @return
	 */
	@Select("select * from sys_user where invitation_code = #{code} limit 1")
	User selectByInvitationCode(@Param("code") String code);

	/**
	 * 根据邀请码查看用户是否存在
	 *
	 * @param code 邀请码
	 * @return 存在 ? t : f
	 */
	@Select("select count(*) > 0 from sys_user where invitation_code = #{code} limit 1")
	boolean selectExistByInvitationCode(@Param("code") String code);

	/**
	 * 设置用户登录信息到数据库
	 *
	 * @param id    用户的id
	 * @param token 用户登录信息
	 */
	@Update("update sys_user set token = #{token} where id = #{id}")
	void setTokenById(@Param("id") Long id, @Param("token") String token);
}
